Ubuntu 初始化 MySQL
前言
因为 MySQL 初始化后无法再修改 lower_case_table_names = 1
所以这里记录一下如何在 Ubuntu20 安装 MySQL 后初始化
配置
安装 MySQL
sudo apt-get update
sudo apt-get install mysql-server -y
停止 MySQL 服务
sudo service mysql stop
删除 MySQL 数据目录
sudo rm -rf /var/lib/mysql
重新创建 MySQL 数据目录(仅仅删除它的内容是不够的)
sudo mkdir /var/lib/mysql
sudo chown mysql:mysql /var/lib/mysql
sudo chmod 700 /var/lib/mysql
添加 lower_case_table_names = 1
到 /etc/mysql/mysql.conf.d/mysqld.cnf.
的 [mysqld]
中
重新初始化 MySQL:
sudo mysqld --defaults-file=/etc/mysql/my.cnf --initialize --lower_case_table_names=1 --user=mysql --console
启动 MySQL 服务:
sudo service mysql start
搜索 MySQL root 新生成的密码 root
sudo grep 'temporary password' /var/log/mysql/error.log
生成的临时密码:
用这个登陆
sudo mysql -u root -p
# 输入上面那个生成的临时密码
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
执行 MySQL 安全策略脚本(输错就重来吧)
sudo mysql_secure_installation
# 运行 mysql_secure_installation 会执行几个设置:
# 建立密码验证插件
# 选择密码规则
# LOW Length >= 8
# 长度大于等于8
# MEDIUM Length >= 8, numeric, mixed case, and special characters
# 长度大于等于8,数字、大小写字母、特殊符号
# STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
# 长度大于等于8,数字、大小写字母、特殊符号和字典文件(慎选!)
# 为 root 用户设置密码
# 删除匿名账号
# 取消 root 用户远程登录
# 删除测试数据表
# 刷新授权表使修改生效
最后检查:
SHOW VARIABLES LIKE 'lower_case_%';
允许远程登陆 root 用户
use mysql;
update user set host = '%' where user = 'root';
select host, user from user;
update user set plugin='mysql_native_password';
FLUSH PRIVILEGES;
exit;
重启
sudo systemctl restart mysql